#ifndef _RoughReflectiveMaterial_H_
#define _RoughReflectiveMaterial_H_

#pragma once
#include "ReflectiveMaterial.h"

class RoughReflectiveMaterial : public ReflectiveMaterial {
private:
	Double roughness;
	int sampleCount;

public:
	RoughReflectiveMaterial(Double roughness, Float reflectiveness = 1, int sampleCount = 1);
	RoughReflectiveMaterial(shared_ptr<Material> material, Double roughness, Float reflectiveness = 1, int sampleCount = 1);
	~RoughReflectiveMaterial() {}

	void setSampleCount(int sampleCount);

	Color shade(const Scene *scene, const Ray &ray, const IntersectResult &intersect, const TraceState & traceState) const;
};

#endif // _RoughReflectiveMaterial_H_